package com.easyCode.sqlManager;

import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.context.properties.ConfigurationProperties;

/**
 * @author 大忽悠
 * @create 2022/12/3 21:33
 */
@ConfigurationProperties(prefix ="easy-generator.global")
@Data
@Slf4j
public class GlobalProperties {
    /**
     * 需要执行sql吗? ---> 默认是不执行的
     */
    private Boolean execSql=Boolean.FALSE;
    /**
     * 需要生成模板文件吗?
     */
    private Boolean sqlMapper=Boolean.TRUE;
    /**
     * 是否需要生成模拟数据
     */
    private Boolean mockData=Boolean.FALSE;
    /**
     * 是否将生成的sql打印到文件保存
     */
    private Boolean printSqlToFile=Boolean.TRUE;
    /**
     * sql文件输出到哪里保存呢? --> 默认是当前项目路径下
     */
    private String sqlFilePath;
    /**
     * 是否需要添加创建数据库的sql语句,如果数据库不存在则进行创建
     */
    private Boolean createDataBase=Boolean.TRUE;
    /**
     * 是否从已经存在的表中进行信息导入
     */
    private Boolean importFromExistTable=Boolean.FALSE;
    /**
     * 已经存在的表名,如果存在多个,用逗号分隔开来
     */
    private String  existTableName;
    /**
     * 特性管理
     */
    private Feature feature=Feature.newDefaultFeature();

    /**
     * TODO: 属性检查,防止不合法属性
     */
    public void propsCheck() {
    }

    @Data
    public static class Feature{
        /**
         * 开启异常自动配置特性
         */
        private Boolean exception=Boolean.TRUE;
        /**
         * 开启mybaits自动配置特性
         */
        private Boolean mybaits=Boolean.TRUE;
        /**
         * 开启cache特性
         */
        private Boolean cache=Boolean.TRUE;
        /**
         * 开启返回值增强特性
         */
        private Boolean responseAdvice=Boolean.TRUE;

        public static Feature newDefaultFeature(){
            return new Feature();
        }
    }
}
